In a multiprocessor computer environment, in which numerous processors might be employed to perform complex computing operations, an individual processor may make use of a memory cache in order to increase the speed of computer operations performed by the processor. By copying frequently used information from a system memory cache into an individual processor's own local memory cache, the time required for the processor to access the cached information is greatly reduced.
However, there are occasions in which a particular processor may need to modify the information stored within the local memory cache. In these instances, the particular processor may update the local memory cache, but may not be permitted to update the memory cache that is under the control of any other processor. Thus, there is a real possibility that one or more of the processors in the multiprocessor environment can operate using an out-of-date copy of the contents of the memory cache. This may cause the computer system to operate unpredictably as each processor carries out instructions using various out-of-date versions of each processor's local memory cache.
In some multiprocessor computer environments, a coherency controller may be used to coordinate changes to the local copies of the memory cache in use by the various processors of the computer system. However, constantly querying each processor to determine whether a particular portion of cached memory is currently being used by the processor can be a task that consumes a significant amount of system resources. Further, there are instances in which a large number of negative responses (indicating that a processor is not using a particular cache line) are received for each affirmative response (indicating that a processor is using a particular cache line) that is received. These time-consuming and inefficient processes can degrade the performance of many high-performance multiprocessor computer environments.